ggplot2 |
您所在的位置:网站首页 › r 语言ggplot2 › ggplot2 |
ggplot2是R语言中最流行的绘图工具包,其风格与基础绘图系统差别很大,且彼此的函数也不能兼容: 通过前面的推文介绍可以看出,基础绘图系统主要是通过一个主函数配合多个辅助函数来完成绘图,各个绘图函数一方面共享来自par函数的参数,另一方面又有各自专用的参数; ggplot2工具包则是将绘图过程分为创建画布和导入数据、绘制图形、设置标度、要素美化等几个独立的任务,每个函数只完成其中一项任务,然后通过+连接各个类型的函数来完成一幅图形的绘制,具体地, ggplot函数:创建绘图画布和导入供全局函数使用的数据集; geom_*系列函数:专门的图形绘制函数或导入仅供该函数使用的数据集; scale_*系列:专门控制各类要素标度的函数; theme函数:专门对各类要素进行美化修饰的函数。 ggplot2工具包虽然对各类函数采取了统一的命名方式,但相比基础绘图系统,其函数数量还是显得特别庞大,短时间内很难完全掌握。本篇推文目的在于通过一个绘图案例对ggplot2绘制图形的过程进行一个入门性的介绍。示例数据来自mtcars数据集: library(ggplot2) data p pggplot函数没有默认的绘制图形; 输出图形可以作为对象赋值给变量,并且该变量还可以打印出图形,这是基础绘图系统所不具备的功能。 2 绘制图形的函数ggplot2包中专门用于绘制图形的函数均以geom_开头进行命名,如geom_point用于绘制散点图、geom_line绘制折线图,geom_bar绘制条形图,geom_boxplot绘制箱型图,还有geom_hline和geom_vline分别用于绘制水平和垂直的直线,等等。这些函数的后缀基本上和基础绘图系统相应的函数一致。 以散点图和折线图为例,通过+可以很便捷地实现不同图形的叠加: p + geom_line() + geom_point()geom_*系列的函数能自动继承ggplot设置的数据框和绘图变量信息; 图层叠加的规则是+后的函数绘制的图形在+前的函数绘制的图形之上。 geom_*函数也可以自定义自己所需的绘图变量: p + geom_line() + geom_point(aes(x = wt, y = mpg))需要注意的是,geom_*系列函数的第一个参数是mapping,第二个参数是data,和ggplot函数是相反的。 在该类函数内可以通过一些参数对图形要素进行美化: p + geom_line(linetype = 2, size = 1.2, col = "blue") + geom_point(shape = 21, size = 3, col = "red", fill = "blue")还可以通过某个变量对要素进行分组美化,需要使用映射函数aes,如通过cyl变量进行分组: data$cyl = factor(data$cyl) p p2 p2geom_smooth默认的平滑方法是loess,通过method和formula等参数可以进行修改。 使用facet_*函数可以分组绘制子图: p + geom_line(linetype = 2, size = 0.8, col = "blue") + geom_point(shape = 21, size = 3, col = "red", fill = "blue") + facet_wrap(~ cyl, scales = "free") 3 标签函数xlab、ylab、ggtitle和labs等函数可以添加图形标签: xlab和ylab只有label一个参数,用于添加横、纵坐标的标签; ggtitle函数用于添加图形标题; labs函数是全能的标签函数。 p2 + xlab("wt(mtcars)") + ggtitle(label = "drat ~ wt") + labs(y = "drat(mtcars)", caption = "R语言学堂") + ylim(2, 5.5) -> p3 p3 4 标度函数标度函数主要用于控制各类要素的属性,该类函数一般采取三级命名方法,之间使用下划线隔开,其中第一级均为scale,第二级有如下几种: scale_alpha_*:透明度标度; scale_color_*:颜色标度 scale_fill_*:填充颜色标度; scale_linetype_*:线型标度; scale_shape_*:点的形状标度; scale_size_*:点的大小和线的粗细标度; scale_x_*:横坐标轴标度; sclae_y_*:纵坐标轴标度。 该类函数是ggplot2包中最复杂的一类函数。前文使用cyl变量将散点的颜色分为三组,这里使用scale_color_manual函数手动指定每组的颜色,使用scale_x_continuous调整横坐标轴的刻度: p3 + scale_color_manual(values = c("red", "blue", "green")) + scale_x_continuous(breaks = seq(1.5, 5.5, 0.5)) -> p4 p4 5 theme函数theme函数用于对图形要素进行美化,它拥有丰富的参数,命名方式也是遵循逐级命名的规则: theme( line, rect, text, title, aspect.ratio, axis.title, axis.title.x, axis.title.x.top, ..., legend.background, legend.margin, legend.spacing, ..., panel.background, panel.border, panel.spacing,..., plot.background, plot.title, plot.title.position, ..., strip.background, strip.background.x, strip.background.y, ..., ..., complete = FALSE, validate = TRUE )该函数参数较多,这里每类只列举前三个,其余使用省略号表示。 theme函数是如何通过一个参数就对某个要素的颜色、形状、大小等诸多属性进行设置的呢?其实它是使用element_*系列函数进行赋值的,而该类函数又包含若干参数: element_*系列主要包含四个函数,除element_blank外,其余三个分别针对线状、矩形和文本类要素进行设置: element_blank: draws nothing, and assigns no space. 如将绘图背景设置为空白: theme(panel.background = element_blank())element_line: lines. element_line( colour = NULL, size = NULL, linetype = NULL, lineend = NULL, color = NULL, arrow = NULL, inherit.blank = FALSE )如将横坐标轴的刻度线设置为红色: theme(axis.ticks.x = element_line(colour = "red"))element_rect: borders and backgrounds. element_rect( fill = NULL, colour = NULL, size = NULL, linetype = NULL, color = NULL, inherit.blank = FALSE )如对图形的背景边框进行调整: theme(panel.border = element_rect(fill = NA, size = 0.3))element_text: text. element_text( family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL, color = NULL, margin = NULL, debug = NULL, inherit.blank = FALSE )如对横坐标的标签进行调整: theme(axis.text.x = element_text(size = 10)) p4 + theme( axis.line = element_line(color = "black", size = 0.2), axis.title = element_text(size = 12), axis.text = element_text(size = 10), axis.ticks = element_line(colour = "grey"), legend.position = "right", legend.direction = "vertical", panel.background = element_blank(), panel.border = element_rect(fill = NA, size = 0.3), panel.grid.major = element_line(linetype = 2, colour = "grey", size = 0.5), plot.title = element_text(size = 12, hjust = 0.5)) -> p5 p5 6 保存图形到本地ggplot2工具包输出图形的函数是ggsave,该函数重要的参数有以下四个: filename:保存地址和文件名; width和height:输出图形尺寸; dpi:输出图片分辨率。 默认保存最后一幅由ggplot2语法绘制的图形: ggsave(filename = "G:/ggplot.jpeg", width = 8, height = 5, dpi = 600)也可以指定保存已经命名的图形对象: ggsave(p4, filename = "G:/ggplot2.jpeg", width = 8, height = 5, dpi = 600)最后附上一幅ggplot2函数的参数清单图: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |